package interfaces;

import objects.WorldObject;
import universe.Universe;

public interface ActionInterface extends Comparable<ActionInterface> {

	public boolean processAction(Universe world);

	public void modifyAction(ActionInterface action);
	

	// --------------------------------------------------------------------------------
	// getters / setters
	// --------------------------------------------------------------------------------
	
	public boolean isActive();
	
	public void setActive(boolean active);
	
	// --------------------------------------------------------------------------------

	public WorldObject getSource();

	public void setSource(WorldObject source);

	// --------------------------------------------------------------------------------

	public WorldObject getTarget();

	public void setTarget(WorldObject target);

	// --------------------------------------------------------------------------------

	public int getPriority();

	public void setPriority(int priority);

	// --------------------------------------------------------------------------------

	public String getName();

	public void setName(String name);

	// --------------------------------------------------------------------------------

	public int getId();

	public void setId(int id);

	// --------------------------------------------------------------------------------

	public double getExecuteTime();

	public void setExecuteTime(double executeTime);

	// --------------------------------------------------------------------------------

	public double getWaitTimeToExecute();

	public void setWaitTimeToExecute(double waitTimeToExecute);

	public ActionInterface cloneAction();

	
}
